通过 Jenkins 自动部署博客

什么是 Jenkins

Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

  • Jenkins 功能包括:
    1. 持续的软件版本发布/测试项目。
    2. 监控外部调用执行的工作。

怎么实现自动化部署

主要通过 Jenkins + Github 仓库的 webhooks 实现。

大概原理就是 git push 源码至源码仓库时,github 源码仓库的 webhooks 发出请求告知 Jenkins 服务器,有代码推送,而后 Jenkins 的自动部署任务开始拉取源码仓库代码进行自动部署操作。

前置条件

  • 服务器最低硬件要求:

    1. 256 MB 内存
    2. 1 GB 的驱动器空间(如果将 Jenkins 作为 Docker 容器运行,则建议至少 10 GB)
  • 自行安装好 Java 环境,最好是 jdk1.5 以上的。

  • 自行安装好 Jenkins,推荐安装 LTS 版本。(具体安装方法自行百度,此处不进行讲解)

  • 注:记得开放对应端口。

  • 如果是部署到 Jenkins,相同服务器记得配置对应权限:如文件的写入、读取等。

基础配置

在安装好 Jenkins 后,于浏览器输入访问地址,进行基础配置。

  1. 根据提示获取密码,输入后,等待初始化。

  1. 自定义 Jenkins 时,选择【安装推荐的插件】(如果不选择后面需要手动下载很多插件),而后等待插件安装。

  1. 创建第一个管理员账户。

  1. 配置 Jenkins URL,就是当前应用的访问地址。

  • 配置好后,建议重启一次,让刚刚安装的【推荐插件】生效。
  • 重启 Jenkins:于访问地址后拼接 restart (例如:http://localhost:8080/restart)。
  • 重载 Jenkins 配置信息:于访问地址后拼接 reload (例如:http://localhost:8080/reload)。
  • 停止 Jenkins 服务器:于访问地址后拼接 exit (例如:http://localhost:8080/exit)。
  1. 安装插件
  • 进入页面后如果不是中文的话,检查下是否安装了插件 【Localization: Chinese (Simplified)】,基本上都是会自动安装的

  • 安装 NodeJS(后面要用,必须要安装):【系统管理】——【插件管理】——【可选插件】——搜索【NodeJS】——【Download now and install after restart】

  • 推荐插件(可选插件):【Safe Restart】,安装后可在菜单栏选择【Restart Safely】一键重启

  • 插件都安装好后需要重启一次。

配置 NodeJS

配置 NodeJS:【系统管理】——【全局工具配置】——【NodeJS】—— 【新增 NodeJS】—— 选择 NodeJS 版本,建议跟本地开发版本一致,而后设置别名

配置 GitHub AccessToken

  1. 【settings】—— 【Developer settings】

  1. 【Personal access tokens】——【Generate new token】

  1. 配置 Token:
  • 【Note】自定义名称,例如:Jenkins Token
  • 【Expiration】选择选择【No expiration】
  • 勾选【repo】、【admin:org_hook】
  • 而后选择【Generate token】

  1. 复制 Token 并记录,后面需要用于 Jenkins,该 Token 只明文显示一次!!!

配置 Jenkins 凭证

  1. 【系统管理】——【Manage Credentials】

  1. 选择【全局】——【添加凭证】

  1. 新建 Secret 凭证:类型选择【Secret text】,【Secret】输入刚刚在 Git 配置的 Token

  1. 新建 GitHub 登录凭证:类型选择【Username with password】,用户名输入 Git 的用户名,勾选【Treat username as secret】,【密码】输入刚刚在 Git 配置的 Token

配置 GitHub 服务器

  1. 【系统管理】——【系统配置】——【GitHub】——【Github 服务器】——【添加 Github 服务器】——【Github Server】

  1. 配置信息,而后点击测试

  1. 测试提示:Credentials verified for user 用户名, rate limit 代表配置成功

  1. 复制 Hook 地址: 选择【高级】—— 勾选【为 Github 指定另外一个 Hook URL】—— 复制 【Hook URL】——【应用】——【保存】

  1. 于 Github 源码仓库配置 Webhooks:【Settings】——【Webhooks】——【Add webhook】

  1. 新建 webhook。配置成功后,源码仓库 push 提交时,Jenkins 就可以监听到了。

配置 Git plugin

【系统管理】——【系统配置】——【Git plugin】—— 配置 user.name 跟 user.email(等等会用到的)——【应用】——【保存】

新建 Jenkins 任务

  1. 【新建任务】—— 输入任务名称,任务名称建议小写 ——【构建一个自由风格的软件项目】

  1. 【源码管理】——【Git】—— 配置

  1. 上图【新增】选择【Custom user name/e-mail address】 ,而后为空!!!不用填写对应 key!!!

  1. 【构建触发器】—— 勾选【GitHub hook trigger for GITScm polling】,用于监听 hook。

  1. 【构建环境】—— 勾选【Use secret text(s) or file(s)】—— 【新增】——【Secret text】—— 选择凭证、设置别名为 token,后面要用到。

  1. 【构建环境】—— 勾选【Provide Node & npm bin/ folder to PATH】—— 选择刚刚配置的 NodeJS 版本

  1. 【构建】——【新增构建步骤】——【执行 shell】
# 进入Jenkins工作空间下的项目目录。
# 工作空间可以从【系统设置】—【系统配置】—【主目录】获取。我这里是 /home/springboot/.jenkins
# 项目目录在工作空间下的 workspace 文件夹内,blog是当前的任务名称
cd /home/springboot/.jenkins/workspace/blog
# 获取 node 版本,可选
node -v
# 获取 npm 版本,可选
npm -v
# 把 npm 源设置为淘宝源
npm config set registry https://registry.npm.taobao.org
# 检测 npm 是否成功切换,可选
npm config get registry
# 安装依赖
npm install
# 打包
npm run build
# 打开打包后的文件夹,dist为默认打包文件夹名称
cd dist
  • 部署到 Github Pages:需要额外添加以下代码,进行 Git push 操作
git init
git add -A

# 这里的 $GIT_AUTHOR_NAME、$GIT_AUTHOR_EMAIL 就是我们刚刚配置的全局变量,配置局部 git config 信息
# 一定要配置第三步的【Custom user name/e-mail address】,不然取不到全局变量
# 不配置局部 git config 的话,就不能进行 git commit 操作
git config user.name $GIT_AUTHOR_NAME
git config user.email $GIT_AUTHOR_EMAIL

# 如果是发布到自定义域名,可选
echo '你的域名' > CNAME

# 提交 commit,"$(date +"%Y-%m-%d %H:%M:%S")" 为当前服务器时间,根据自己需求修改
git commit -m "$(date +"%Y-%m-%d %H:%M:%S")"

# 自2021年8月13日起,GitHub 不再支持使用密码 push 的方式,所以我们要使用刚刚配置的 Personal access token 用于 push
# 取 https 仓库地址,格式为:https://$token@你的仓库地址,例如 https://$token@github.com/demo/demo.git
# $token 是刚刚配置的变量
git push -f https://$token@你的仓库地址 master
  • 部署到当前服务器:需要文件夹的读入、写入等权限
# 把生成的项目文件打包成压缩包,方便操作。blog 是压缩文件名称
tar -zcvf blog.tar.gz *
# 进入 web 项目目录,/www/wwwroot 为自己当前服务器项目目录,blog 为当前要部署的项目目录,名称自定义(如果没有就要新建,不然会报错)
cd /www/wwwroot/blog
# 将打包好的压缩包,复制到 web 项目目录
cp -r /home/springboot/.jenkins/workspace/blog/dist/blog.tar.gz ./
# 解压项目到项目目录
tar -zxvf blog.tar.gz -C ./
# 删除压缩包,可选
rm -rf blog.tar.gz
上次更新 2026/6/23 11:49:15
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8